package com.un.ebs.memorial.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.un.ebs.core.common.GroupListInfo;
import com.un.ebs.core.common.KeyValueDto;
import com.un.ebs.memorial.domain.*;
import com.un.ebs.memorial.dto.MemorialAddDto;
import com.un.ebs.memorial.dto.MemorialUpdateDto;
import com.un.ebs.memorial.dto.MemorialVo;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 服务类
 * </p>
 *
 * @author liubo
 * @since 2020-03-12
 */
public interface MemorialService {

    /**
     * 创建
     *
     * @param req
     */
    String add(MemorialAddDto req);

    /**
     * 修改
     *
     * @param req
     */
    void update(MemorialUpdateDto req);

    /**
     * 删除
     *
     * @param id
     */
    void delete(String id);

    /**
     * 修改主题名称
     *
     * @param name
     */
    void updateName(String id, String name);

    /**
     * 修改主题描述
     *
     * @param nameDesc
     */
    void updateNameDesc(String id, String nameDesc);

    /**
     * 修改纪念内容
     *
     * @param id
     * @param content
     */
    void updateContent(String id, String content);

    /**
     * 修改Logo
     *
     * @param file
     */
    void updateLogo(String id, MultipartFile file);

    /**
     * 上传照片
     *
     * @param id
     * @param files
     */
    void updatePhoto(String id, List<MultipartFile> files);

    /**
     * 修改封面
     *
     * @param id
     * @param file
     */
    void updateFrontCover(String id, MultipartFile file);

    /**
     * 修改背景图片
     *
     * @param image
     */
    void updateImage(String id, String image);

    /**
     * 修改背景音乐
     *
     * @param music
     */
    void updateMusic(String id, String music);

    /**
     * 删除图片
     *
     * @param key
     */
    void removePhoto(String key);

    /**
     * 访客记录
     *
     * @param memorialId
     * @param type
     * @param remark
     */
    void record(String memorialId, String type, String remark);

    /**
     * 评论
     *
     * @param memorialId
     * @param content
     */
    void recordComment(String memorialId, String content);

    /**
     * 评价点赞
     *
     * @param recordId
     * @return
     */
    int commentPraise(String recordId);

    /**
     * 查询照片
     */
    List<KeyValueDto> queryPhotos(String id);

    /**
     * 查询详情
     *
     * @param id
     * @return
     */
    Memorial queryById(String id);

    /**
     * 查询详情视图
     *
     * @param id
     * @return
     */
    MemorialExt queryExtById(String id);

    /**
     * 根据用户查询纪念馆
     *
     * @param userId
     * @return
     */
    List<Memorial> queryByUserId(String userId);

    /**
     * 根据蜇者查询所有纪念馆
     *
     * @param id
     * @return
     */
    List<MemorialExt> queryViewByDefunctId(String id);

    /**
     * 查询视图详情
     *
     * @param id
     * @return
     */
    MemorialVo queryViewById(String id);

    /**
     * 查询所有纪念馆
     *
     * @param pageIndex
     * @param pageSize
     * @return
     */
    IPage<MemorialExt> query(String name, int pageIndex, int pageSize);

    List<GroupListInfo<MemorialExt>> queryHomePage(int pageSize);

    List<MemorialMemberExt> queryMember(String id);

    IPage<MemorialRecordExt> queryRecord(String id, String typeId, int pageIndex, int pageSize);

    IPage<MemorialRecordExt> queryComment(String id, int pageIndex, int pageSize);

    List<MemorialRecordTypeExt> queryRecordTypeCount(String id, String typeId);

    List<MemorialRecordType> queryRecordType();


}
